package com.yxw.live_vod_backend_boot.service;

import com.yxw.live_vod_backend_boot.dto.VodDosageDto;
import com.yxw.live_vod_backend_boot.vo.VodDosageVo;
import com.yxw.live_vod_backend_boot.vo.VodOverviewVo;
import com.yxw.live_vod_backend_facade.dto.AddVodUsageInformationDto;
import com.yxw.live_vod_facade.dto.*;
import com.yxw.live_vod_facade.vo.OnDemandCommentVO;
import com.yxw.live_vod_facade.vo.PageVodInfoListVO;
import com.yxw.live_vod_facade.vo.VideoReviewVO;
import com.yxw.live_vod_facade.vo.VodSalesRevenueVo;
import com.yxw.yxnet_cd_center.common.dto.PageVO;
import com.yxw.yxnet_cd_center.common.utils.BaseResult;

import java.util.Date;
import java.util.List;

/**
 * @author liuxin
 * @create 2023-12-1
 * @description 点播相关后台操作
 */
public interface VodBackendService {

    /**
     * 视频审核处理
     * @param dto
     * @return
     */
    BaseResult handle(VideoReviewHandelDTO dto);

    /**
     * 查询待审核视频列表
     * @param dto
     * @return
     */
    BaseResult<PageVO<VideoReviewVO>> pageVideoReviews(PageVideoReviewsDTO dto);

    /**
     * 店铺点播作品列表详情查询
     * @param dto
     * @return
     */
    BaseResult<PageVO<PageVodInfoListVO>> pageVodInfoList(PageVodInfoListDto dto);

    /**
     * 查询视频下面的评论和回复
     * @param dto
     * @return
     */
    BaseResult<PageVO<OnDemandCommentVO>> pageVideoComments(PageOnDemandCommentDTO dto);

    /**
     * 删除评论
     * @param commentId
     * @return
     */
    BaseResult deleteCommentById(Long commentId);

    /**
     * 下架视频
     * @param dto
     * @return
     */
    BaseResult deleteVideoByIds(VideoDeleteDTO dto);

    /**
     * 获取点播视频用量信息
     * @param dto
     * @return
     */
    List<VodDosageVo> getVodUsageInformation(VodDosageDto dto);

    /**
     * 定时任务查询点播视频用量（天维度）
     */
    void insertVodUsageInformationByDay(AddVodUsageInformationDto dto);

    /**
     * 查询点播概览信息
     * @return
     */
    VodOverviewVo getVodOverviewInfo();

    /**
     * 查询点播商品带货收入详情
     * @param videoId
     * @return
     */
    BaseResult<VodSalesRevenueVo> getVodSalesRevenue(Long videoId);
}
